Software products are often in a near constant state of improvement. An initial version might be sent “out to the field”, and sometime later an improved version is released and again sent “out to the field”. Some software products are delivered as web applications comprising (1) hypertext markup language (HTML) that codifies the structure of a user interface (UI) that runs on a client machine, (2) style code (e.g., in a cascading style sheet) that deals with the look-and-feel and other presentation aspects of elements in the HTML, and (3) JavaScript code that brings behavior to the HTML elements. Such software products may also have a “back-end” that runs on a server. Code for the UI (e.g., HTML, CSS and JavaScript) as well as code for the back-end all need to stay “in-synch”. One legacy approach is to deploy incremental improvements in the form of configurations of UI elements (HTML), presentation code (CSS) and behavior code (JavaScript). Unfortunately this legacy technique forces the release of an entirely new code base—possibly also requiring updates to back-end code—when deploying the improved version. This legacy technique has further deficiencies, at least in that the improved version cannot be deployed until all of the code is completed. This deficiency often leads to very long upgrade cycles (e.g., many months or years) and results in an undesirable “big bang” effect for each release.
What is needed is a technique or techniques to improve over legacy approaches.